If the following code is run in a z/OS environment, a system 0C4 abend might occur:
proc sql;
create table new as select * from dictionary.functions;
quit;
Note: The abend can also occur if the step references a dictionary.formats table.
The failure occurs because certain enumerations cannot be performed.
An enumeration is performed when the STEPLIB directory is examined for all modules
with a given prefix.
There are several places within SAS®
software where an enumeration technique is used:
- function modules, starting with UWU, which are obtained when using dictionary.functions tables
- format and informat modules, starting with UWF and UWI, which are obtained when using
dictionary.formats tables
- product info modules, starting with UWXL or UWYL, which are called by PROC PRODUCT_STATUS
to give more information about products
- dynamic nickname modules, starting with SASNK, which are all loaded and called to build
a dynamic nickname table of procedures. This is done the first time a PROC statement
is used, regardless of whether the procedure name is a nickname. An example of a procedure
that needs this dynamic nickname table is the QUANTLIFE procedure.
If your site places the entirety of the SAS System in the LINKLIST or LPA, these
enumerations cannot be performed, and certain modules must reside in STEPLIB in order for the enumerations to function.
As noted above, the list of modules includes those beginning with the following strings:
- UWU
- UWF
- UWXL
- UWYL
- UWI
- SASNK
Alternatively, the modules can exist
in LPA or LINKLIST, although they will not be accessed there, but instead from STEPLIB.
To build the library that must be referenced by STEPLIB:
// EXEC SAS
//IN DD DSN=original.sas.library,DISP=SHR (substitute your local name)
//OUT DD DSN=new.steplib.library,DISP=SHR (substitute your local name)
//SYSIN DD *
proc pdscopy indd=in outdd=out;
select uwu: uwi: uwf: uwyl: uwxl: sasnk:;
run;
//
You should then update your cataloged procedure to ensure that the STEPLIB is present:
//STEPLIB DD DSN=new.steplib.library,DISP=SHR (substitute your local name)
//* follow by any other libraries you may need
// DD DSN=.....
If you do not follow this method, unexpected results might occur when any of the
enumeration scenarios is encountered. Note that the procedure nickname scenario occurs
in almost every SAS job, so it is imperative that there be a STEPLIB with the
minimal set of SAS modules.
You should not place all SAS modules into LINKLIST or LPA.
For information about what modules are eligible for being placed in LINKLIST or LPA,
refer to the Configuration Guide for SAS 9.x Foundation for z/OS, where 9.x
is the appropriate SAS release.
Operating System and Release Information
SAS System | N/A | z/OS | 9.3 TS1M0 | 9.4 TS1M3 |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.